/* 
静态类型系统必须调用应该在其系统中将哪些代码标记为错误，即使它是不会立即抛出错误的“有效”JavaScript。在 TypeScript 中，以下代码会产生关于location未定义的错误：
*/

const user = {
    name: "Daniel",
    age: 26,
  };
   
  const a = user.location;
// 在 typescript中使用对象中未声明的属性，就会报错，不能使用未声明的对象的属性，但是你用了，也不影响编译，照样可以转换成js代码，js代码也可以正常运行不报错

const announcement = "Hello World!";
 
// How quickly can you spot the typos?
announcement.toLocaleLowercase();
announcement.toLocalLowerCase();
 
// 如果在使用方法或变量的时候出现拼写错误，ts会马上检测出来，并报错，就能及时更改

// We probably meant to write this...
announcement.toLocaleLowerCase();

function flipCoin() {
  // Meant to be Math.random()
  return Math.random < 0.5;

  //这里直接把一个函数跟数字比较，ts检测直接报错
}

const value = Math.random() < 0.5 ? "a" : "b";
if (value !== "a") {
  // ...
} else if (value === "b") { //这里进了else if 的逻辑就说明value肯定取a，再判断一下value是否等于b,完全是没必要的,ts也报错，说明ts很智能，帮你检测一些基本逻辑
  // Oops, unreachable
}